package com.project.mapper;

import com.project.bean.CutPageBean;
import com.project.bean.RoomBean;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface IRoomMapper {
    /**
     * 添加房间
     *
     * @param room 房间对象
     */
    void add(RoomBean room);

    /**
     * 查询指定编号房间的人数
     * @param roomId 房间编号
     * @return 人数
     */
    int getStudentNumByRoomId(Integer roomId);

    /**
     * 按班级编号删除房间
     * 1、统计房间已住人数的数量
     * 2、如果已住人数不为0，返回false
     * 3、如果已住人数为0,先删除该房间的设施维护记录，再删除房间
     *
     * @param roomId
     */
    boolean del(Integer roomId);

    /**
     * 按性别查询可住房间
     * @param gender 性别
     * @return 房间集合
     */
    List<RoomBean> getByGender(String gender);

    /**
     * 按编号更新
     * @param roomId
     */
    void updateStatus(Integer roomId);

    /**
     * 通过编号查询房间，同时统计该房间的已住人数
     * 同时查询房间学生集合，学生信息中，需要包含班级名称
     *
     * @param roomId
     * @return 房间对象
     */
    RoomBean getById(Integer roomId);

    /**
     * 动态查询当前页
     * @param start 起始位置
     * @param pageSize 页码范围
     * @param addr   地址
     * @param status 房间状态
     * @param enable 是否可住
     * @param type   房间类型
     * @return 当前页对象集合
     */
    List<RoomBean> cutByItemList(@Param("start") int start, @Param("pageSize") int pageSize, @Param("addr") String addr,
                                        @Param("status") String status, @Param("enable") String enable, @Param("type") String type);
    /**
     * 动态查询总记录数
     * @param addr 地址
     * @param status 房间状态
     * @param enable 是否可住
     * @param type   房间类型
     * @return 总记录数
     */
    int getTotalByItem(@Param("addr") String addr, @Param("status") String status, @Param("enable")
            String enable, @Param("type") String type);
}
